import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default ({
    state: {
        menuList: [], //导航菜单
        authList: [], //权限集合
        hasRoute: false, //标识符，当前全局中是否已经生成路由

        editableTabs: [{
                title: '首页',
                name: 'Index',
            }

        ], //标签tabs集合
        editableTabsValue: 'Index', //当前选中的标签tab的名称 tab.name
    },
    mutations: {
        //设置导航列表
        setMenuList(state, menus) {
            state.menuList = menus;
        },
        //设置权限列表
        setAuthList(state, auths) {
            state.authList = auths;
        },
        //设置路由生成标识符
        changeHasRouteStatus(state, hasRoute) {
            state.hasRoute = hasRoute;
        },

        //新增标签页 tab - 导航菜单传入的item值，title和name分别与tab的对应
        addTab(state, tab) {

            //如果tab.name在editableTabs中存在，即表示为重复的tab，直接跳转到该页面

            let index = state.editableTabs.findIndex(e => e.name === tab.name)

            //findIndex方法返回-1则为不存在 否则为存在
            if (index === -1) {
                //向集合中push一个tabs，新增一个标签页
                state.editableTabs.push(tab);
            }

            //无论是否新增tab，都设置为当前tab为选中状态
            state.editableTabsValue = tab.name;
        },
        //设置激活的tab
        setActiveTab(state, tabName) {
            state.editableTabsValue = tabName
        },

        //清除全局状态信息
        resetState(state) {
            //所有值设置为初始值
            state.menuList = [], //导航菜单
                state.authList = [], //权限集合
                state.hasRoute = false, //标识符，当前全局中是否已经生成路由

                state.editableTabs = [{
                    title: '首页',
                    name: 'Index',
                }], //标签tabs集合
                state.editableTabsValue = 'Index' //当前选中的标签tab的名称 tab.name
        }
    },
    actions: {},
    modules: {}
})